/**
 * 1、使用 Object.create( prototype ) 创建实例
 * 2、
 * 3、使用 Object.getOwnPropertyNames 获得指定对象的自有属性
 */

// 创建一个 纯对象 ( pure object ) (这个对象没有任何属性，也没有从Object继承任何属性)
let x = Object.create( null );
console.log( x );
// console.log( x.hasOwnProperty( 'name' ) ); // x.hasOwnProperty is not a function

// 采用 propertyName: propertyDescriptor 形式声明多个属性
let properties = {
    'id' : { value: 9009 , configurable: false , enumerable: false , writable: false } ,
    'name' : { value: '秦雯雯' },
    'gender' : { value: '靓哥' },
    'age' : { value: 18 } ,
    'has': { value: Object.prototype.hasOwnProperty }
}

Object.defineProperties( x , properties ) ;

console.log( x );

console.log( x.id , x.name , x.gender , x.age );

let names = Object.getOwnPropertyNames( x ) ;
console.log( names );

names.forEach( name => {
    console.log( name , x[ name ] );
});

console.log( x.has( 'name' ) ) ;



